package com.boardgamelib.entity;
import java.util.Random;

/** Rappresenta una mossa effettuata (o effettuabile).<br>
 * Il nome corretto della classe sarebbe Move.<br>
 * 
 * 
 * TODO Commenti
 * @author g.terenziani
 *
 */
public class Mossa<C extends Cella<P>, P extends Pezzo<G>, G extends Giocatore> {
	
	public Mossa(C partenza, P pezzo, C arrivo, G giocatore) {
		setPartenza(partenza);
		setPezzo(pezzo);
		setArrivo(arrivo);
		setGiocatore(giocatore);
	}
	
	private C partenza;
	private P pezzo;
	private C arrivo;
	private G giocatore;
	Random giro = new Random();
	
	public C getPartenza() {
		return partenza;
	}
	public void setPartenza(C partenza) {
		this.partenza = partenza;
	}
	public P getPezzo() {
		return pezzo;
	}
	public void setPezzo(P pezzo) {
		this.pezzo = pezzo;
	}
	public C getArrivo() {
		return arrivo;
	}
	public void setArrivo(C arrivo) {
		this.arrivo = arrivo;
	}
	public G getGiocatore() {
		return giocatore;
	}
	public void setGiocatore(G giocatore) {
		this.giocatore = giocatore;
	}
	public Integer getTiroDiDado(Integer facce) {
		Integer tiro = giro.nextInt(facce-1);
		tiro = tiro +1;
		return tiro; 
	}
	// pensata per tutti i casi in cui serve un vero/falso - buona/cattiva probabilita
	public Boolean getProbabilita() { 
		Boolean probabilita = giro.nextBoolean();
		return probabilita; 
	}
	
	private boolean diventaProprietarioDelPezzoSeNonLoSei;

	public boolean isDiventaProprietarioDelPezzoSeNonLoSei() {
		return diventaProprietarioDelPezzoSeNonLoSei;
	}
	public void setDiventaProprietarioDelPezzoSeNonLoSei(
			boolean diventaProprietarioDelPezzoSeNonLoSei) {
		this.diventaProprietarioDelPezzoSeNonLoSei = diventaProprietarioDelPezzoSeNonLoSei;
	}
}
